package com.haolp.sys.dao;

import com.haolp.sys.common.vo.RoleCheckBoxVo;
import com.haolp.sys.common.vo.SysRoleMenuVO;
import com.haolp.sys.pojo.SysLog;
import com.haolp.sys.pojo.SysRole;
import org.apache.ibatis.annotations.Delete;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;
import org.springframework.stereotype.Service;

import java.util.List;

/**
 * @author 小李
 * @version 1.0
 * @date 2021/10/5 16:28
 */
public interface SysRoleDao {
    /**
     * 获取所有角色的id和name
     * @return
     */
    @Select("select id,name from sys_roles")
    List<RoleCheckBoxVo> findObjects();
    /**
     * 基于角色Id查询角色以及对应的菜单数据
     * @param id
     * @return
     */
    SysRoleMenuVO findObjectById(Integer id);
    /**
     * 将角色信息更新到数据库
     * @param sysRole
     * @return
     */
   int updateObject(SysRole sysRole);
    /**
     * 删除数据
     * @param id
     * @return
     */
    @Delete("delete from sys_roles where id=#{id}")
    int delectObject(Integer id);
    /**
     * 将角色信息写入数据库
     * @param sysRole
     * @return
     */
   int insertObject(SysRole sysRole);

    /**
     * 基于添加查询总记录数
     * @param name 查询条件
     * @return 总记录数（基于该返回值计算总页数）
     */
    int getRowCount(@Param("name") String name);

    /**
     * 基于条件分页查询日志信息
     * @param name   查询条件
     * @param startIndex 起始位置
     * @param pageSize   当前页码大小
     * @return 当前页的日志记录信息
     * 数据库中每条日志信息封装到SysLog对象中
     */
    List<SysRole> findPageObjects(@Param("name") String name,
                                  @Param("startIndex") Integer startIndex,
                                  @Param("pageSize") Integer pageSize);
}